package pe.gob.sedapal.scmultimedia.rcp.view.centrosservicios;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.graphics.FontMetrics;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.layout.RowData;

import pe.gob.sedapal.scmultimedia.config.ApplicationContext;
import pe.gob.sedapal.scmultimedia.domain.CentroServicio;
import pe.gob.sedapal.scmultimedia.domain.Oficina;
import pe.gob.sedapal.scmultimedia.service.ConsultaCentroDeServicioService;
import pe.gob.sedapal.scmultimedia.util.Constante;
import pe.gob.sedapal.scmultimedia.util.Messages;
import pe.gob.sedapal.scmultimedia.wb.swt.ResourceManager;
import pe.gob.sedapal.scmultimedia.wb.swt.SWTResourceManager;

import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Label;

public class ConsultaCentroServiciosView extends ViewPart {

	
	public static final String ID = Constante.ID_CONSULTA_CENTRO_SERVICIO_2_VIEW;	
	
	private List<CentroServicio> centrosServiciosList = new ArrayList<CentroServicio>();	
	private List<Oficina> oficinaList = new ArrayList<Oficina>();

	private ConsultaCentroDeServicioService centroServicioService;
	
	private Table table;
	private Composite composite;
	//private Composite OficinasComposite;

	int y = 10;
	int y2 = 10;
	private Table tableOficinas;

	public ConsultaCentroServiciosView() {
		centroServicioService = (ConsultaCentroDeServicioService)ApplicationContext.getBean(ConsultaCentroDeServicioService.class);
	}

	@Override
	public void createPartControl(Composite parent) {
		
		composite = new Composite(parent, SWT.BORDER);
		composite.setBackgroundImage(ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_IMG_FONDO_SEDAPAL)); //$NON-NLS-1$
		composite.setBackgroundMode(SWT.INHERIT_DEFAULT);
		
		Label imgLogo = new Label(composite, SWT.NONE);
		imgLogo.setImage(ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_IMG_LOGO_SEDAPAL_INTERNO)); //$NON-NLS-1$
		imgLogo.setBounds(635, 10, 192, 84);
		
		ScrolledComposite scrolledComposite = new ScrolledComposite(composite, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
		scrolledComposite.setBounds(10, 131, 247, 238);
		scrolledComposite.setExpandHorizontal(true);
		scrolledComposite.setExpandVertical(true);
		
		table = new Table(scrolledComposite, SWT.BORDER | SWT.FULL_SELECTION);
		table.setFont(org.eclipse.wb.swt.SWTResourceManager.getFont("DejaVu Sans", 11, SWT.NORMAL)); //$NON-NLS-1$
		table.setBackground(SWTResourceManager.getColor(255, 255, 255));
		table.setForeground(org.eclipse.wb.swt.SWTResourceManager.getColor(0, 0, 0));
		table.setHeaderVisible(false);
		table.setLinesVisible(true);
				
//		TableColumn tblclmnNombreCentro = new TableColumn(table, SWT.CENTER);
//		tblclmnNombreCentro.setWidth(199);
//		tblclmnNombreCentro.setText(Constante.NOMBRE_CENTRO_SERVICIO);
		scrolledComposite.setContent(table);
		scrolledComposite.setMinSize(table.computeSize(SWT.DEFAULT, SWT.DEFAULT));
		
		Label lblTituloCtrosServicio = new Label(composite, SWT.NONE);
		lblTituloCtrosServicio.setForeground(org.eclipse.wb.swt.SWTResourceManager.getColor(8,99,159));
		lblTituloCtrosServicio.setFont(org.eclipse.wb.swt.SWTResourceManager.getFont("FreeSans", 17, SWT.BOLD | SWT.ITALIC)); //$NON-NLS-1$
		lblTituloCtrosServicio.setBounds(10, 20, 557, 23);
		lblTituloCtrosServicio.setText(Messages.consultaCentroServicios_titulo);
		
		Label imgOficina = new Label(composite, SWT.NONE);
		imgOficina.setImage(ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_IMG_OFICINA_SEDAPAL)); //$NON-NLS-1$
		imgOficina.setBounds(10, 375, 247, 143);
		
		Label label = new Label(composite, SWT.NONE);
		label.setImage(ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_IMG_BARRA)); //$NON-NLS-1$
		label.setBounds(10, 61, 736, 8);
		
		tableOficinas = new Table(composite, SWT.BORDER | SWT.FULL_SELECTION);
		tableOficinas.setFont(org.eclipse.wb.swt.SWTResourceManager.getFont("DejaVu Sans", 11, SWT.NORMAL)); //$NON-NLS-1$
		tableOficinas.setBounds(293, 105, 477, 413);
		tableOficinas.setHeaderVisible(true);
		tableOficinas.setLinesVisible(true);
		
		TableColumn Etiquetastblclmn = new TableColumn(tableOficinas, SWT.NONE);
		Etiquetastblclmn.setWidth(115);
		
		TableColumn datostblclmn = new TableColumn(tableOficinas, SWT.NONE);
		datostblclmn.setWidth(350);
		datostblclmn.setText(Messages.consultaCentroServicios_datosOficina);
		
		Label lblElijaCentro = new Label(composite, SWT.NONE);
		lblElijaCentro.setBounds(10, 105, 247, 20);
		lblElijaCentro.setText(Messages.consultaCentroServicios_centroServicio);		
		lblElijaCentro.setForeground(SWTResourceManager.getColor(Constante.VALOR_FUENTE_RED,Constante.VALOR_FUENTE_GREEN, Constante.VALOR_FUENTE_BLUE));
		lblElijaCentro.setFont(SWTResourceManager.getFont("Ubuntu", 14, SWT.BOLD));		

	    centrosServiciosList =  centroServicioService.listarCentrosServicios();
		dibujarTabla();
		
		
		table.addMouseListener(new org.eclipse.swt.events.MouseListener(){

			@Override
			public void mouseDoubleClick(MouseEvent e) {
				// TODO Auto-generated method stub				
			}

			@Override
			public void mouseDown(MouseEvent e) {
				// TODO Auto-generated method stub
				if(e.button ==1){
					int indice = table.getSelectionIndex();
					CentroServicio centroServicioAux = centrosServiciosList.get(indice);
					mostrarOficinasPorCodigo(centroServicioAux.getCodUnicom());
				}
			}

			@Override
			public void mouseUp(MouseEvent e) {
				// TODO Auto-generated method stub
			}
		});
	}

	@Override
	public void setFocus() {
		// TODO Auto-generated method stub
	}
	
	
	public void dibujarTabla(){
		TableItem item;
		FontMetrics fm = new GC(Display.getCurrent()).getFontMetrics();
	//	int height = fm.getHeight(); 
		int width = 100* fm.getAverageCharWidth();
		int height =  100* table.getItemHeight() + table.getHeaderHeight();

		table.setLayoutData(new RowData(width, height));

		for (CentroServicio centro : centrosServiciosList) {
			item= new TableItem(table, SWT.NONE);
			item.setFont(org.eclipse.wb.swt.SWTResourceManager.getFont("FreeSans", 15, SWT.NORMAL)); //$NON-NLS-1$
			item.setText(0, centro.getNomUnicom());		
		}	
		
		table.setRedraw(true);		
	}
	

	private void mostrarOficinasPorCodigo(Long codigo) {
		// TODO Auto-generated method stub

			oficinaList = centroServicioService.listarOficinasPorCodigo(codigo);

			TableItem item;
			TableItem item1;
			TableItem item2;
			TableItem item3;
			TableItem item4;
			@SuppressWarnings("unused")
			TableItem item5;
			if(oficinaList == null){
				System.out.println("LISTA NULL"); //$NON-NLS-1$
			}else{
				System.out.println("LISTA CREADA"); //$NON-NLS-1$
			}
			tableOficinas.removeAll();
			for (Oficina oficina : oficinaList) {
				item= new TableItem(tableOficinas, SWT.NONE);
				item.setFont(org.eclipse.wb.swt.SWTResourceManager.getFont("FreeSans", 12, SWT.BOLD | SWT.ITALIC)); //$NON-NLS-1$
				item.setText(0, Messages.consultaCentroServicios_tabla_nombreOficina);
			    item.setText(1, oficina.getNomUnicom());
			    item1= new TableItem(tableOficinas, SWT.NONE);
			    item1.setText(0, Messages.consultaCentroServicios_tabla_direccionOficina);
			    item1.setText(1, oficina.getDireccion());
			    item2= new TableItem(tableOficinas, SWT.NONE);
			    item2.setText(0, Messages.consultaCentroServicios_tabla_distritoOficina);
			    item2.setText(1, oficina.getDistrito());
			    item3= new TableItem(tableOficinas, SWT.NONE);
			    item3.setText(0, Messages.consultaCentroServicios_tabla_provinciaOficina);
			    item3.setText(1, oficina.getProvincia());
			    item4= new TableItem(tableOficinas, SWT.NONE);
			}	
			
			tableOficinas.setRedraw(true);			
  
		
	}
}
